18 research outputs found

    Garbage collection auto-tuning for Java MapReduce on Multi-Cores

    Get PDF
    MapReduce has been widely accepted as a simple programming pattern that can form the basis for efficient, large-scale, distributed data processing. The success of the MapReduce pattern has led to a variety of implementations for different computational scenarios. In this paper we present MRJ, a MapReduce Java framework for multi-core architectures. We evaluate its scalability on a four-core, hyperthreaded Intel Core i7 processor, using a set of standard MapReduce benchmarks. We investigate the significant impact that Java runtime garbage collection has on the performance and scalability of MRJ. We propose the use of memory management auto-tuning techniques based on machine learning. With our auto-tuning approach, we are able to achieve MRJ performance within 10% of optimal on 75% of our benchmark tests

    An efficient object promotion algorithm for persistent object systems

    No full text
    We report on a bulk object-loading algorithm for persistent object stores called Ghosted Allocation. It allocates large numbers of objects in a persistent store atomically, efficiently, and reliably. Its main strengths are that it minimizes I/O traffic, optimizes the disk access pattern, and does not impose complex requirements on applications. Our experiments demonstrate that the Ghosted Allocation algorithm is efficient and most importantly scalable, sustaining allocation rates of up to 63 000 objects s-

    An Orthogonally Persistent Java

    No full text
    The language Java is enjoying a rapid rise in popularity as an application programming language. For many applications an effective provision of database facilities is required. Here we report on a particular approach to providing such facilities, called "orthogonal persistence". Persistence allows data to have lifetimes that vary from transient to (the best approximation we can achieve to) indefinite. It is orthogonal persistence if the available lifetimes are the same for all kinds of data. We aim to show that the programmer productivity gains and possible performance gains make orthogonal persistence a valuable augmentation of Java. 1 Introduction The programming language Javaä [Gosling et al. 96] is achieving considerable prominence [Arnold & Gosling 96, van der Linden 96, Flanagan 96] 3 . Its libraries and architectural neutrality encourage the use of Java for distributed and mobile computing [Straßer et al. 96]. However, other characteristics, such as: strong typing, single-i..

    GCspy An adaptable heap visualisation framework

    No full text
    SIGLEAvailable from British Library Document Supply Centre-DSC:8723.2885(no 5-02) / BLDSC - British Library Document Supply CentreGBUnited Kingdo

    Multi-Level Virtual Machine Debugging using the Java Platform Debugger Architecture ⋆

    No full text
    Abstract. Debugging virtual machines (VMs) presents unique challenges, especially meta-circular VMs, which are written in the same language they implement. Making sense of runtime state for such VMs requires insight and interaction at multiple levels of abstraction simultaneously. For example, debugging a Java VM written in Java requires understanding execution state at the source code, bytecode and machine code levels. However, the standard debugging interface for Java, which has a platform-independent execution model, is itself platform-independent. By definition, such an interface provides no access to platform-specific details such as machine code state, stack and register values. Debuggers for low-level languages such as C and C++, on the other hand, have direct access only to low-level information from which they must synthesize higher-level views of execution state. An ideal debugger for a meta-circular VM would be a hybrid: one that uses standard platformindependent debugger interfaces but which also interacts with the execution environment in terms of low-level, platform-dependent state. This paper presents such a hybrid architecture for the meta-circular Maxine VM. This architecture adopts unchanged a standard debugging interface, the Java Platform Debugger Architecture (JPDA), in combination with the highly extensible NetBeans Integrated Development Environment. Using an extension point within the interface, additional machine-level information can be exchanged between a specialized server associated with the VM and plug-in extensions within NetBeans.

    ParMarkSplit: A Parallel Mark-Split Garbage Collector Based on a Lock-Free Skip-List

    No full text
    Mark-split is a garbage collection algorithm that combines advantages of both the mark-sweep and the copying collection algorithms. In this paper, we present a parallel mark-split garbage collector (GC). Our parallel design introduces and makes use of an efficient concurrency control mechanism for handling the list of free memory intervals. This mechanism is based on a lock-free skip-list design which supports an extended set of operations. Beside basic operations, it can perform a composite one that can search and remove and also insert two elements atomically. We have implemented the parallel mark-split GC in OpenJDK’s HotSpot virtual machine. We experimentally evaluate our collector and compare it with the default concurrent mark-sweep GC in HotSpot, using the DaCapo benchmarks, on two contemporary multiprocessor systems; one has 12 Intel Nehalem cores with HyperThreading and the other has 48 AMD Bulldozer cores. The evaluation shows that our parallel mark-split keeps the characteristics of the sequential mark-split, that it performs better than the concurrent mark-sweep in applications that have low live/garbage ratio, and have live objects locating contiguously, therefore being marked consecutively. Our parallel mark-split performs significantly better than a trivial parallelization based on locks in terms of both collection time and scalability
    corecore